chore(ported_static): sync from forks/amsterdam onto snøbal/4#2783
Open
leolara wants to merge 5 commits intoethereum:devnets/snøbal/4from
Open
chore(ported_static): sync from forks/amsterdam onto snøbal/4#2783leolara wants to merge 5 commits intoethereum:devnets/snøbal/4from
leolara wants to merge 5 commits intoethereum:devnets/snøbal/4from
Conversation
…changes Sync 1467 ported_static test files from origin/forks/amsterdam (e7043cc) to pick up upstream test maintenance, notably PR ethereum#2695 "use dynamic addresses in ported static tests". Files modified on snøbal/4 since the merge-base with forks/amsterdam (606) and files marked @manually-enhanced (14) are preserved. Also delete tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py, removed upstream in PR ethereum#2695 (deprecated by the *_paris.py splits that already live in the directory).
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## devnets/snøbal/4 #2783 +/- ##
===================================================
Coverage ? 86.68%
===================================================
Files ? 599
Lines ? 37848
Branches ? 3821
===================================================
Hits ? 32807
Misses ? 4503
Partials ? 538
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…ing entries The list previously contained 5469 entries — many for tests that pass on snøbal/4 today (test source updated, addresses now dynamic, etc.) or for tests that no longer exist after PR ethereum#2695's regeneration. Empirically: - With the bloated list: 17199 passed, 1731 skipped, 0 failed. - With no list: 17565 passed, 0 skipped, 1365 failed (gas). - After this prune: 17565 passed, 1365 skipped, 0 failed. The remaining 455 entries are exactly those that match a currently- failing fork_Amsterdam parametrization (still legitimate InsufficientTransactionGasError under EIP-8037's two-dimensional gas model). Section-header counts updated to reflect the actual contents.
Three of these tests embed the runtime caller address directly in their target contract's bytecode. The expected post hashed in a literal hex string of the bytecode that hardcoded the pre-dynamic EOA address (e.g. \`0xd9b97c712eb…\`), so once \`pre.fund_eoa()\` started picking addresses dynamically the deployed code no longer matched the expected hex. Hoist the bytecode into a \`target_code\` variable used both at deploy time and as the expected \`code\`, so the address baked in via \`Op.CALL(address=addr, …)\` is whatever \`addr\` resolves to at fill time: - \`test_call50000\` - \`test_callcode50000\` - \`test_call20_kbytes_contract50_2\` \`test_quadratic_complexity_solidity_call_data_copy\` had a different drift: its post asserted empty storage on \`contract_0\`, but the success path (\`g=1\`, 250M gas) commits \`SSTORE(0, 50000)\` before entering the loop. Make the expected storage \`g\`-conditional so \`g=0\` (OOG) keeps an empty \`storage\` and \`g=1\` records slot 0.
4 tasks
…ly-enhanced The four post-state corrections cherry-picked from PR ethereum#2784 should not be overwritten the next time `tests/ported_static/` is regenerated by `scripts/filler_to_python`. Add the `@manually-enhanced` marker to each docstring so the regenerator skips them.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🗒️ Description
Three related changes to
tests/ported_static/ondevnets/snøbal/4:forks/amsterdam(e7043ccce, PR feat(scripts): use dynamic addresses in ported static tests #2695 "use dynamic addresses in ported static tests"), preserving the snøbal-specific work.amsterdam_skip_list.txtfrom 5 469 → 455 entries — only those that match a currently-failingfork_Amsterdamparametrization on snøbal/4.forks/amsterdam): correct post-state expectations for fourstQuadraticComplexityTestcases.Sync (commit 1)
The sync is mechanical and reversible: a small script (
.mb/sync-ported-static-snobal-4/sync.sh, not committed) computes three sets — files differing betweenorigin/forks/amsterdamand HEAD; files modified on snøbal/4 since the merge-base; files marked@manually-enhancedon either side — and appliesgit checkout/git rmfor the symmetric difference. Counts:tests/ported_static/@manually-enhancedon either side (preserved).py+ 14.pyccache hits)forks/amsterdamstTimeConsuming/test_sstore_combinations_initial.py, deprecated by the*_paris.pysplits already in the directory)Skip list prune (commit 2)
Running
--fork Amsterdam -m "not slow"on the post-sync working tree without the skip list produces:So 366 fork_Amsterdam parametrizations were being needlessly skipped (test source was updated by PR #2695 / addresses are now dynamic / the test no longer exists). The remaining 1 365 still fail with EIP-8037-related post-state assertions (
KeyValueMismatchError,BalanceMismatchError,MissingAccountError, etc. — see.mb/sync-ported-static-snobal-4/skipped-failures.jsonfor the full classification). Fixing those is real test-engineering work, out of scope here.The pruned list keeps exactly the entries that match at least one of those 1 365 failing nodeids; section-header counts updated to reflect actual contents.
stQuadraticComplexityTestpost-state fixes (commits 3-4)Cherry-pick of PR #2784 (
forks/amsterdam→ snøbal/4). Four tests instQuadraticComplexityTest/(all marked@pytest.mark.slow, so excluded from CI's normal-m "not slow"runs) had post-state expectations that didn't match the actual fill output. PR #2784 corrects them; verified passing here under--fork Cancun(these tests carryvalid_until("Prague"), so Amsterdam isn't in their range):Trace verification (full sync + prune, all forks)
-m "not slow")exact-no-stack-no-gas)The 78 diffs in the second row are explained by the disk/in-memory tracer asymmetry that PR #2772 fixes — confirmed by hand-cherry-picking PR #2772 into this branch and re-running, which clears them. Once #2772 lands on
forks/amsterdamand propagates here, this sync verifies cleanly with no manual work.Coverage caveat — Amsterdam skip list
The 1 365 still-skipped
fork_Amsterdamparametrizations were not exercised in either the all-forks fill or the trace verify (Amsterdam isn't in the default parametrization range, so without--fork Amsterdamthey don't get generated, and with--fork Amsterdamthey're skipped byconftest.py/amsterdam_skip_list.txt). Their traces have not been compared. Fixing the underlying EIP-8037 post-state issues is out of scope for this sync PR.🔗 Related Issues or PRs
forks/amsterdamate7043ccce(feat(scripts): use dynamic addresses in ported static tests #2695).✅ Checklist
just statictype(scope):.mkdocs servelocally and verified the auto-generated docs for new tests in the Test Case Reference are correctly formatted.@ported_frommarker.